<?php
// src/Sdz/BlogBundle/Command/FixtureCategoriesCommand.php

namespace D3hdv\Diablo3Bundle\Command;

use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
use Symfony\Component\Console\Input\InputArgument; 
use D3hdv\HdvBundle\Entity\HdvCompte;
use D3hdv\Diablo3Bundle\Entity\Role;

use Symfony\Component\Security\Core\Encoder\MessageDigestPasswordEncoder;



 

class FixtureCompteHdvCommand extends ContainerAwareCommand
{
    protected function configure()
    {
        $this->setName('D3hdvHdv:fixture:CompteHdv');
    }

    protected function execute(InputInterface $input, OutputInterface $output)
    {
        // On récupère l'EntityManager
        $em = $this->getContainer()->get('doctrine.orm.entity_manager');

	$repository = $this->getContainer()->get('doctrine')->getEntityManager()->getRepository('D3hdvDiablo3Bundle:Role');

	    // On récupère l'entité correspondant à l'id $id
	$Roles_User_Hdv = $repository->findByName("ROLE_USER");
	$i=0;
	for($i=0;$i<20;$i++)
	{
		echo $i."</br>";
	
		$HdvCompte[$i] = new HdvCompte();
	        $randsuffix=($i+rand()+100);
		// On donne le login Admin à notre nouvel utilisateur
		$HdvCompte[$i]->setUsername('test'.$randsuffix);
		$HdvCompte[$i]->setEmail('test@'.$randsuffix.'Diablo3.net');
		// On cré un salt pour amélioré la sécurité
		$HdvCompte[$i]->setSalt(md5(time()));
	 
		// On crée un mot de passe (attention, comme vous pouvez le voir, il faut utiliser les même paramètres
		// que spécifiés dans le fichier security.ym, a sacoir SHA512 avec 10 itérations.        
		$encoder = new MessageDigestPasswordEncoder('sha512', true, 10);
		// On crée donc le mot de passe "test" à partir de l'encodage choisi au-dessus
		$password = $encoder->encodePassword('12345', $HdvCompte[$i]->getSalt());
		// On applique le mot de passe à l'utilisateur
	
		$HdvCompte[$i]->setPassword($password);
	 	
		//$HdvCompte[$i]->getUserRoles()->add($role);
		foreach($Roles_User_Hdv as $j => $Role_User_D3)
		{
	 		$HdvCompte[$i]->addUserRole($Role_User_D3);
		}
		$em->persist($HdvCompte[$i]);
	 
		$output->writeln('Enregistrement du compte User test'.$randsuffix.' Hôtel des Ventes  ...');
	
	}
        // On déclenche l'neregistrement
        $em->flush();

        // On retourne 0 pour dire que la commande s'est bien exécutée
        return 0;
    }
}

?>
